---
title: Reporting.IReport
summary: API reference for Reporting.IReport.
status: draft
owner: SAIF Case Management
last_reviewed: 2026-08-21
library: SAIF.Services.Printing
reference_type: embedded
---

# Reporting.IReport

`IReport` is the contract implemented by `Reporting.ReportBase` (and, by inheritance, any concrete report/letter subclass) that defines the full lifecycle of a letter/report: build its XML content, render it to PDF bytes, and print, distribute, or save the rendered output. It exists so that consumers can depend on a stable report/letter abstraction rather than a concrete implementation.*

## Purpose
- Define the create/render/print/distribute/save lifecycle that every concrete report/letter type must support.
- Define the output-profile switching contract (default vs. draft/watermark) used before rendering.

## Context
- Namespace: `SAIF.Services.Printing.Reporting`
- Assembly/package: `SAIF.Services.Printing` (embedded, front-end referenced)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `Create(overwrite)` | `Function Create(overwrite As Boolean) As Object` | Builds (or rebuilds, if `overwrite`) the report/letter's XML document tree. Implemented by `ReportBase` as an overridable base with subclass override points; see [Render a letter or report](../../operations/render-report.md). |
| `Render(overwrite)` | `Function Render(overwrite As Boolean) As Boolean` | Renders the built XML into PDF bytes; see [Render a letter or report](../../operations/render-report.md). |
| `Print(printer, overwrite)` | `Function Print(printer As String, overwrite As Boolean) As Boolean` | Renders (if needed) and prints the report/letter; see [Print a letter or report](../../operations/print-report.md). |
| `Distribute(overwrite)` | `Function Distribute(overwrite As Boolean) As Boolean` | Builds XML (if needed) and distributes the report/letter; see [Distribute a letter or report](../../operations/distribute-report.md). |
| `Save(overwrite)` | `Function Save(overwrite As Boolean) As Boolean` | Renders (if needed) and writes the resulting bytes to disk; see [Save a rendered report to disk](../../operations/save-report.md). |
| `SetDefaultProfile()` | `Sub SetDefaultProfile()` | Switches to the standard PDF output profile; see [Switch output profile](../../operations/switch-output-profile.md). |
| `SetDraftProfile()` | `Sub SetDraftProfile()` | Switches to the draft-watermark PDF output profile; see [Switch output profile](../../operations/switch-output-profile.md). |

## Behavioral notes
- The only confirmed implementer in the scanned repository is `Reporting.ReportBase`; the only confirmed concrete subclass is the test-only `MyReport` in `SAIF.Services.Printing.Tests`. Whether production code elsewhere implements this interface directly is unknown.**

## Constraints and usage notes
- Consumers depending on `IReport` rather than `ReportBase` directly gain the ability to substitute alternative implementations, though none besides `ReportBase` was found in this repository.*

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Services.Printing\Reporting\IReport.vb`
- `SAIF.Services.Printing\SAIF.Services.Printing.Tests\MyReport.vb`
